Because of the desire to be able to communicate in a secure manner, computers have some internal system for generating encryption keys. These encryption keys are typically random “0” and “1” numbers and are generated by a “random number generator” (RNG). The randomness of the “0” and “1” numbers is designed to be completely unpredictable, including to those who know how the random number generator is designed. A “true random number generator” (TRNG) uses a non-deterministic source to produce the randomness. Many TRNGs operate by measuring unpredictable natural processes, such as thermal noise, atmospheric noise, or nuclear decay. A more recent technique for random number generation involves measuring quantum noise from an optical homodyne detection apparatus (e.g., a beam-splitter). Although this approach generates truly random bits, it is somewhat difficult to integrate on a chip.
There is always room for improvement in random number generating systems.